Function.prototype.myCall = function () {
  // 第一个参数为绑定的对象
  let _this = arguments[0]
  const _thisType = typeof _this

  // 传入原始类型进行转换
  if (_thisType === 'string') {
    _this = new String(_this)
  } else if (_thisType === 'number') {
    _this = new Number(_this)
  } else if (_thisType === 'boolean') {
    _this = new Boolean(_this)
  }
  let args = [...arguments].slice(1)

  let invokeFn = this
  if (_this === null || _this === undefined) {
    return invokeFn(...args)
  }


  let FnName = Symbol(_this)
  _this[FnName] = invokeFn
  return _this[FnName](...args)

}
